1. Field of the Invention
This invention is related to the field of computer systems and, more particularly, to decision making and policy-based automation in computer systems.
2. Description of the Related Art
The Information Technology (IT) world is becoming increasingly complex, but IT managers are being pressured to drive down costs, especially by reduced staffing. IT managers would like to manage this in terms of supply, demand, and cost, rather than bytes and servers.
One of the biggest costs in an IT organization is the staffs salary cost. Other costs related to staff include the cost of errors, malicious behavior, training and education, etc. Taking the person out of the feedback loop for system administration as much as possible has been a dream for IT for a long time. Consequently, more decisions about how a system should proceed need to be made without human intervention, and more decisions need to be made at a higher level, further away from the basic bytes and devices. This implies a need for automated decision-making that responds to policy rules that are increasingly complex and less discretely defined. In other words, more “intelligence” is needed in the computer so that the human doesn't have to resolve as many problems.
Conventional expert systems and other Artificial Intelligence (AI) solutions try to make decisions by querying a knowledgebase of information to ask the question, “Is [something] known,” and examining the “yes/no” Boolean result. However, these systems have not addressed the problem of applying a Boolean result to an incomplete knowledge of the system's environment. This incomplete knowledge in a conventional AI system leads to users' lack of confidence in the quality of the answers produced by such expert systems. These systems cannot be certain to evaluate the correct answer because their knowledge base must always be a subset of the sum total of knowledge, and it is not possible to be certain whether critical information was missing in an arbitrarily complex environment. Therefore, by definition, querying the system whether something is “known” cannot lead to a certain result. In practice, conventional expert systems are generally considered useless for most real world decisions because they cannot reliably choose the right answer from their knowledge of their environments.
One problem with conventional, non-trivial decision systems is that decisions may become very complicated. One reason for this is that the decisions are based on information that is not completely known or is uncertain. In addition, not everything relevant about the system for which decisions are being made is typically known. Another common reason is that two or more component rules of the policy may be in direct conflict with each other. In general, policies for more complex systems become non-linearly more complex and are much harder to program to obtain the right answer: i.e. no incorrect-positives, or incorrect-negatives. This leads to distrust of the automated system
Conventional decision systems may implement Artificial Intelligence (AI) inference techniques. For example, typical conventional decision systems may use one of probability calculus, fuzzy set theory, or case based reasoning, also known as evidential logic calculus and typically implemented in neural networks to calculate a confidence level in the Boolean result. Conventional decision systems typically implement only one of these inference techniques and are targeted at particular applications for which the implemented inference technique works fairly well, and thus conventional decision systems tend to be limited to particular environments and particular problems and are therefore not generally applicable to a wide scope of applications or problems.
Further, each of the various inference techniques has limitations, and thus decision systems implementing one of these inference techniques may have limitations due to the limitation of the particular inference technique used. Fuzzy logic and probability calculus based inference techniques do not use historical information to improve the calculation of uncertainty. Probability calculus deals in probabilities, unlike the possibilities of fuzzy logic, and these probabilities require accurately seeded probability information for the underlying axioms and rules, but this information may not be measurable or otherwise known. Fuzzy logic systems require some kind of function to determine fuzzy set membership when the fuzzy set is defined, but this membership function may not be known. Case-based reasoning requires historical information to set the weights between possible choices. For example, in a decision system using a neural network, the decision system has to be taught what the right and wrong answers are before it is useful. Collection of historical information and programming of the network is necessary to help the system understand and make decisions. For example, when a server fails, a cluster server may protect applications by failing the application over to another server so that the application can continue running. If a neural network is used in an automated decision system for the cluster server, the cluster would have to be crashed repeatedly to teach the neural network that that is something it should not do.
Fuzzy Relational Inference Language (FRIL) and FRIL++
FRIL is an uncertainty logic programming language which includes Prolog as a subset of the language, and which allows probabilistic uncertainties and fuzzy sets to be included. This generalization of logic programming provides a powerful and flexible environment for modeling and implementing Artificial Intelligence applications, and extends the semantics of Prolog by embodying open worlds and true logic negation. A different list-based syntax is used from the standard “Edinburgh” syntax of Prolog. FRIL has recently been extended to represent and reason with uncertain logical class hierarchies leading to the new programming language FRIL++.
FRIL and FRIL++ can deal with uncertainty in data, facts, and rules using fuzzy sets and support pairs. In addition to the Prolog rule, there are three different types of uncertainty rules: the basic rule, the extended rule, and the evidential logic rule. The extended rule is important for causal net type applications, and the evidential logic rule is relevant to case-based and analogical reasoning. Each rule can have associated conditional support pairs, and the method of inference from such rules is based on Jeffrey's rule that is related to the theorem of total probability. Fuzzy sets can be used to represent semantic terms in FRIL clauses, and support for FRIL goals can be obtained by a process of partial matching of such fuzzy terms called semantic unification. FRIL implements a calculus of support logic programming, which defines the method of computing support pair inferences. FRIL rules can also implement Fuzzy Control knowledge simply and directly.